import { defineStore } from 'pinia'

export default defineStore('user', {
    state: () => ({
        token: localStorage.getItem('token') || '',
        isLoggedIn: false,
        isLoggedOut: false,  // 用来标记 token 是否失效，避免重复清除
        avatarUrl: '/src/assets/navBar/avatar/loginin.png', // 默认登录头像
        userInfo: {}
    }),
    actions: {
        // 设置 token 和 userInfo
        setAuthData(token: string, userInfo: object) {
            this.token = token;
            this.userInfo = userInfo;
            this.avatarUrl = userInfo?.avatar; // 用户头像或者错误头像
            this.isLoggedIn = !!token
            this.isLoggedOut = false;  // 重置登出标志
            // 存储userInfo，使用JSON.stringify()转换为字符串
            localStorage.setItem('token', token)
            localStorage.setItem('userInfo', JSON.stringify(userInfo));
        },
        // 清除登录数据
        clearAuthData() {
            this.token = '';
            this.userInfo = {};
            this.avatarUrl = '/src/assets/navBar/avatar/loginin.png'; // 退出后恢复默认登录头像
            this.isLoggedIn = false;
            this.isLoggedOut = true; // 标记为已退出
            // 清除 token 和用户信息
            localStorage.removeItem('token');
            localStorage.removeItem('userInfo');
        },
    },
    // 使用持久化插件的配置
    persist: {
        key: 'auth',  // 设置 localStorage 中的 key 名
        storage: localStorage,
    }
})